package com.baoyouqun.domain.CreateCmd;

import cn.hutool.core.util.StrUtil;
import io.swagger.annotations.ApiModelProperty;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Positive;
import lombok.Data;

/**
 * 积分核销创建命令（仅支持“积分兑换扣减”=changeType=3）
 */
@Data
public class UserPointsWriteOffCreateCmd {
    @NotBlank(message = "100301:用户ID不能为空")
    @ApiModelProperty(value = "用户ID（关联user表，必填）")
    private String userId;

    @ApiModelProperty(value = "核销类型")
    private String type;

    @NotNull(message = "100301:核销积分数不能为空")
    @Positive(message = "100305:核销积分数必须为正数")
    @ApiModelProperty(value = "核销积分数（正数，后端自动转为负数扣减，必填）")
    private Integer writeOffPoints; // 前端传正数（如1000），后端转-1000

    @NotBlank(message = "100301:核销描述不能为空")
    @ApiModelProperty(value = "核销描述（如“购物卡兑换”，必填）")
    private String bizDesc;

    @NotBlank(message = "100301:操作人不能为空")
    @ApiModelProperty(value = "操作人")
    private String operator;
    

    /**
     * 校验核销描述长度（避免超长）
     */
    public boolean isValidBizDesc() {
        return StrUtil.isBlank(bizDesc) || bizDesc.length() <= 200;
    }

    public String getBizDescErrorMsg() {
        return "100306:核销描述不能超过200个字符";
    }
}